package com.ts.api.module.product.service;

import com.ts.api.module.product.entity.po.ProductPlanPO;
import com.ts.api.module.product.entity.qo.ProductPlanQO;

import java.util.List;

/**
 *  机构计划业务层
 */
public interface ProductPlanService {

    /**
     *  根据id获取计划
     *
     *  @param id
     *  @return
     */
    ProductPlanPO get(Long id);

    /**
     *  查询所有机构计划
     *
     *  @author Pan
     *  @param  productPlanQO
     *  @return List
     */
    List<ProductPlanPO> list(ProductPlanQO productPlanQO);

    /**
     *  查询该主体下的所有计划
     *
     *  @author Pan
     *  @param  productId   主体所有计划
     *  @return List
     */
    List<ProductPlanPO> listByProductId(Long productId);

    /**
     *  将此次匹配所有的计划中，过滤出已经被当前用户分发过的计划
     *
     *  @param listMatchPlan    匹配集合
     *  @param userId           当前用户id
     */
    List<ProductPlanPO> filterDistributeByUser(List<ProductPlanPO> listMatchPlan, Long userId);

    /**
     *  将此次匹配所有的计划中，过滤出已经被当前用户分发过的计划(本地crm计划)
     *
     *  @param listMatchPlan    匹配集合
     *  @param userId           当前用户id
     */
    List<ProductPlanPO> filterDistributeLocalCrmByUser(List<ProductPlanPO> listMatchPlan, Long userId);
}
